const gameCom = require("./gameCommon");

class GameMode{
    constructor() {

    }

    static getInstance(){
        if(!GameMode.instance){
            GameMode.instance = new GameMode();
            return GameMode.instance;
        }else{
            return GameMode.instance;
        }
    }

    //获取题目id数
    async getTips(count,gameType,uid){
        //先判断redis 里面有没有
        //题目的数据
        let arr = [];
        let list=  await global.gameSerMgr.gameRedis.get_redis_topic_list(uid);
        let topics = gameCom.getTidsByType(gameType);

        for (let i = 0; i < topics.length; i++) {
            let tid = topics[i];
            if(list.indexOf(tid.toString()) === -1){
                arr.push(tid)
            }
            if(arr.length >= count){
                break;
            }
        }
        //打乱顺序
        // arr = this.shuffleArray(arr);
        // arr = [1001];// 测试
        // resolve(arr);

        return arr;
    }

    //数组打乱
    shuffleArray(arr) {
        if (!Array.isArray(arr)) {
            throw new Error('输入参数必须是一个数组');
        }

        const newArr = arr.slice(); // 创建一个新数组，避免修改原数组
        for (let i = newArr.length - 1; i > 0; i--) {
            const j = Math.floor(Math.random() * (i + 1));
            [newArr[i], newArr[j]] = [newArr[j], newArr[i]]; // 使用解构赋值交换元素
        }
        return newArr;
    }
}

module.exports = GameMode.getInstance();